package com.isky.visual.db.factory;

import com.isky.visual.db.domain.DatabaseConfig;
import com.isky.visual.db.entity.Source;

import java.sql.Connection;
import java.util.List;
import java.util.Map;

/**
 * @version v1.0
 * @ProjectName visual_parent
 * @ClassName IDbManager
 * @Description 数据库连接接口
 * @Author wudl
 * @Date DATE{TIME}
 */

public interface IDbManager {

    /**
     * 获取各种数据源的连接
     * @return
     */
    Connection getConnection();

    /**
     * 获取各种数据库的表字段sql
     * @param tableName
     * @param source
     * @return
     */
    String getShowColumnSql(String tableName, Source source);

    /**
     * 获取各种数据库表sql
     * @return
     */
    String getShowTableSql();

    /**
     * 获取各种数据库表sql
     * @param source
     * @return
     */
    String getShowTableSql(Source source);

    /**
     * 获取表字段
     * @param con
     * @param sql
     * @return
     */
    List<Map<String, Object>>  getTableColumn(Connection con,String sql) throws Exception;

    /**
     * 查询单表数量的sql
     * @param tableName
     * @return
     */
    String getSingleTableCountSql(String tableName);

    /**
     * 查询单表数据的sql
     * @param tableName
     * @param limit
     * @return
     */
    String getSingleTableDataSql(String tableName,Integer limit);

}
